package java编程思想.第18章._10_nio;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class BufferToText {
	private static final int BSIZE = 1024;

	public static void main(String[] args) throws Exception {
		FileChannel fc = new FileOutputStream("D://data3.txt").getChannel();
		// fc.write(ByteBuffer.wrap("Some text".getBytes()));
		// fc.close();
		// fc = new FileInputStream("D://data3.txt").getChannel();
		ByteBuffer buff = ByteBuffer.allocate(BSIZE);
		// fc.read(buff);
		// buff.flip();
		//
		// System.out.println(buff.asCharBuffer());// 输出数据,乱码
		// // 重绕此缓冲区。将位置设置为零并丢弃标记。
		// buff.rewind();
		//
		// // 获取系统编码格式
		// String encoding = System.getProperty("file.encoding");
		// // Charset.forName(encoding).decode(buff)用Charset去解析缓冲字节流
		// System.out.println("Decoded using " + encoding + " : " +
		// Charset.forName(encoding).decode(buff));// 输出数据,无乱码

		// fc = new FileOutputStream("D://data3.txt").getChannel();
		// fc.write(ByteBuffer.wrap("Some text".getBytes()));
		// fc.close();
		// fc = new FileInputStream("D://data3.txt").getChannel();
		// buff.clear();
		// fc.read(buff);
		// buff.flip();
		// System.out.println(buff.asCharBuffer()); // 输出数据,乱码
		// fc = new FileOutputStream("D://data3.txt").getChannel();
		buff = ByteBuffer.allocate(24);
		buff.asCharBuffer().put("Some text");
		fc.write(buff);
		// System.out.println(fc.position());
		fc.close();
		fc = new FileInputStream("D://data3.txt").getChannel();
		buff.clear();
		fc.read(buff);
		buff.flip();
		// buff.position(0);
		int num = 0;
		while (buff.hasRemaining()) {
			num++;
			System.out.print(buff.getChar());
		}
		System.out.println(num);
		// fc.read(buff);
		// buff.flip();
		// System.out.println(buff.asCharBuffer());
	}
}
